package com.kungfu.service;

import com.kungfu.entity.*;
import com.kungfu.entity.request.*;
import com.kungfu.entity.response.CYJXInfoEntity;
import com.kungfu.entity.response.DailyQueryResponse;
import com.kungfu.entity.response.HzBean;
import com.kungfu.entity.response.MakeSureUserResponse;

import java.util.Date;
import java.util.List;

public interface ZzdService {
    /**
     * 查询用户转诊单信息
     *
     * @param request
     * @return
     */
    MakeSureUserResponse queryZzdByUserInfo(MakeSureUserRequest request);

    /**
     * 入院登记
     *
     * @param request
     * @return
     */
    int inpatientHospital(InpatientRequest request);

    /**
     * 取消结算
     *
     * @param request
     * @return
     */
    int cancelCharge(CancelChargeRequest request);

    /**
     * 预结算
     *
     * @param request
     * @return
     */
    DataInsertResult readyToCharge(ReadyToChargeRequest request);

    /**
     * 日结算查询
     *
     * @param request
     * @return
     */
    DailyQueryResponse dailyChargeQuery(DailyQueryRequest request);

    /**
     * 取消入院登记
     *
     * @param request
     * @return
     */
    int cancelRegistration(CancelRegistrationRequest request);

    /**
     * 通过住院号查询转诊信息
     *
     * @param zyh
     * @return
     */
    GfjsZzd queryInfoByZYH(String zyh);

    /**
     * 插入收据单信息
     *
     * @param receiptRolls
     * @return
     */
    int insertRolls(ReceiptRolls receiptRolls);

    /**
     * 同步每日明细
     *
     * @param SJDH
     * @param zzdh
     * @param request
     * @return
     */
    DataInsertResult syncMxItem(String SJDH, String zzdh, List<MXEntity> request);

    /**
     * 查询所有未读的 结算信息
     *
     * @return
     */
    List<HzBean> queryUnreadSum();

    /**
     * 修改读取状态
     *
     * @param request
     * @return
     */
    int changeReadFlag(FlagChangeRequest request);

    int updateZzdInfo(InpatientChargeRequest request);

    String queryUserUnExistData(String hzid);

    List<CYJXInfoEntity> queryChargeList();

    int queryItemCount();

    MakeSureUserResponse queryMzZzdByUserInfo(MakeSureUserRequest sureUserRequest);

    DataInsertResult outpatientCharge(OutpatientRequest request);

    MakeSureUserResponse queryMXzZdBySate(MakeSureUserRequest sureUserRequest);

    int updateZZdState(String zzdh);

    GfjsZzd queryUsedMzZzd(MakeSureUserRequest sureUserRequest);

    int cancelZzd(String zzdNo);

    int createNewZzd(GfjsZzd zzdh);

    int cancelOutpatientCharge(CancelOutPatientChargeRequest request);

    String getZzdStatus(String zzdh);

    List<String> queryUsedZzd(String sfzh);

    GfjsZzd queryZzdIsExist(String sfzh);

    GfjsZzd queryZzdIsVaild(String sfzh);

    GfjsZzd queryZyExist(String zzdh);

    GfjsZzd queryZzdByCardNo(String cardNo);

    void updateZzdRecord();
}
